跳到主要内容

13 罗马数字转整数

https://leetcode.cn/leetbook/read/top-interview-questions-easy/xn4n7c/

https://leetcode.cn/problems/roman-to-integer/

cost: 10m21s

class Solution {
public:
int romanToInt(string str) {
int r = 0;
int n = str.size();
for (int i = 0; i < n; i++) {
char ch = str[i];
switch (ch) {
case 'I':
if (i < n && str[i + 1] == 'V' || str[i + 1] == 'X') {
r -= 1;
} else {
r += 1;
}
break;
case 'V':
r += 5;
break;
case 'X':
if (i < n && str[i + 1] == 'L' || str[i + 1] == 'C') {
r -= 10;
} else {
r += 10;
}
break;
case 'L':
r += 50;
break;
case 'C':
if (i < n && str[i + 1] == 'D' || str[i + 1] == 'M') {
r -= 100;
} else {
r += 100;
}
break;
case 'D':
r += 500;
break;
case 'M':
r += 1000;
break;
}
}
return r;
}
};